package com.jie.commonlib.base

import android.app.Application
import com.jie.commonlib.GlobalConfig
import com.jie.commonlib.support.arouter.ARouterManager
import io.reactivex.rxjava3.plugins.RxJavaPlugins
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.ProcessUtils

/**
 * Application基类
 * @author jie
 */
abstract class BaseApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        if (ProcessUtils.isMainProcess()) {
            // 主进程才需要初始化
            initConfig()
            initARouter()
            initRxjava()
        }
    }

    /**
     * 初始化全局配置
     */
    private fun initConfig() {
        GlobalConfig.init()
    }

    /**
     * 初始化ARouter
     */
    private fun initARouter() {
        ARouterManager.getInstance().init(this)
    }

    /**
     * 初始化rxjava异常处理
     */
    private fun initRxjava() {
        RxJavaPlugins.setErrorHandler { throwable: Throwable ->
            throwable.printStackTrace()
            LogUtils.e(throwable)
        }
    }
}